package com.njust.controller.RequestMappingHandler;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * 为当前类所有的方法的请求地址指定一个基准路径
 */
@Controller
@RequestMapping("/mapping")
public class RequestMappingController {

    @RequestMapping("/handle1")
    public String handle1(){
        System.out.println("handle1被调用");
        return "reqmapping.jsp";
    }

    /**
     * RequestMapping的其他属性
     * method：限定请求方式、
     * 		HTTP协议中的所有请求方式：
     * 			【GET】, HEAD, 【POST】, PUT, PATCH, DELETE, OPTIONS, TRACE
     * 		GET、POST
     * 		method=RequestMethod.POST：只接受这种类型的请求，默认是什么都可以；
     * 			不是规定的方式报错：4xx:都是客户端错误
     * 				405 - Request method 'GET' not supported
     * params：规定请求参数
     * params 和 headers支持简单的表达式：
     * 		param1: 表示请求必须包含名为 param1 的请求参数
     * 			eg：params={"username"}:
     * 				发送请求的时候必须带上一个名为username的参数；没带都会404
     *
     * 		!param1: 表示请求不能包含名为 param1 的请求参数
     * 			eg:params={"!username"}
     * 				发送请求的时候必须不携带上一个名为username的参数；带了都会404
     * 		param1 != value1: 表示请求包含名为 param1 的请求参数，但其值不能为 value1
     * 			eg：params={"username!=123"}
     * 				发送请求的时候;携带的username值必须不是123(不带username或者username不是123)
     *
     * 		{“param1=value1”, “param2”}: 请求必须包含名为 param1 和param2 的两个请求参数，且 param1 参数的值必须为 value1
     * 			eg:params={"username!=123","pwd","!age"}
     * 				请求参数必须满足以上规则；
     * 				请求的username不能是123，必须有pwd的值，不能有age
     * headers：规定请求头；也和params一样能写简单的表达式
     *
     *
     *
     * consumes：只接受内容类型是哪种的请求，规定请求头中的Content-Type
     * produces：告诉浏览器返回的内容类型是什么，给响应头中加上Content-Type:text/html;charset=utf-8
     */
    @RequestMapping(value = "/handle2", method = RequestMethod.POST)
    public String handle2(){
        System.out.println("handle2被调用");
        return "reqmapping.jsp";
    }

    @RequestMapping(value = "/handle3", params = {"username"})
    public String handle3(){
        System.out.println("handle3被调用");
        return "reqmapping.jsp";
    }

    @RequestMapping(value = "/handle4", headers = {})
    public String handle4(){
        System.out.println("handle4被调用");
        return "reqmapping.jsp";
    }
}
